home *** CD-ROM | disk | FTP | other *** search
- |##########|
- |#MAGIC #|BMOKLLCP
- |#PROJECT #|"ImportAll"
- |#PATHS #|"StdProject"
- |#FLAGS #|xx-x-x--x---xxx-----------------
- |#USERSW #|--------------------------------
- |#USERMASK#|--------------------------------
- |#SWITCHES#|xx---xxxxx------
- |##########|
- DEFINITION MODULE FileSystem;
-
- FROM System IMPORT Regs;
- FROM Resources IMPORT NotEnoughMemory,ContextPtr;
- FROM T_Dos IMPORT DosExceptionGrp;
-
-
- EXCEPTION
- BadFile : "Bad filehandle";
- NoInFile : "InFile not opened";
- NoOutFile : "OutFile not opened";
- OutFileOpenedTwice : "OutFile allready open";
- InFileOpenedTwice : "InFile allready open";
-
- GROUP
- FsExceptionGrp = NoInFile,NoOutFile,NotEnoughMemory,T_Dos.DosExceptionGrp;
-
- TYPE
- File = HIDDEN;
-
-
- (*============== Global File =================================================*)
-
- |
- | Funktion : Öffnet eine Datei
- | Parameter : f <-> Pointer der die Datei spezifiziert
- | name <- Name der Datei
- | new <- Flag, ob eine neue oder eine bestehende Datei
- | geöffnet werden soll
- | size <- Größe des Puffers für dei Datei in Bytes
- | context <- Context, zu dem das File geöffnet werden soll,
- | ist dieser NIL, wird der ActContext verwendet.
- |
-
- PROCEDURE Open(VAR f : File;
- REF name : STRING;
- new : BOOLEAN := FALSE;
- size : LONGINT := $1000;
- context : ContextPtr := NIL);
-
- |
- | Funktion : Schließt eine Datei
- | Parameter : f <- Zeiger der Datei, dei geschlossen werden soll
- | Bemerkung : Am Programmende sollten alle Files wieder geschlossen werden
- |
-
- PROCEDURE Close(VAR f : File);
-
-
- |
- | Funktion : Liefert die aktuelle Länge eines Files
- | Parameter : f <- File dessen Länge ermittelt werden soll
- | -> Länge des Files in Bytes
- |
-
- PROCEDURE Length(f : File):LONGINT;
-
-
- (*============== Input =======================================================*)
-
- |
- | Funktion : Ließt ein Zeichen
- | Parameter : f <- File von dem gelesen werden soll
- | c -> Gelesenes Zeichen.
- |
-
- PROCEDURE Read(f : File;VAR c : CHAR);
-
-
- |
- | Funktion : Ließt einen beliebigen Typen fester Länge
- | Parameter : f <- File von dem gelesen werden soll
- | block -> gelesene Variable.
- |
-
- PROCEDURE ReadBlock(f : File;VAR block : ANYTYPE);
-
-
- |
- | Funktion : Ließt eine Anzahl Bytes und schreibt sie in den Speicher
- | Parameter : f <- File von dem gelesen werden soll
- | pos -> Stellen ab der die Daten in den Speicher geschrieben
- | werden sollen.
- | len -> Anzahl der Zeichen, die gelesen werden sollen.
- |
-
- PROCEDURE ReadBytes(f : File;pos : ANYPTR;len : LONGINT);
-
-
- (*============== Output ======================================================*)
-
- |
- | Funktion : Schreibt ein Zeichen
- | Parameter : f <- File in das geschrieben werden soll
- | c -> zu schreibendes Zeichen.
- |
-
- PROCEDURE Write(f : File;c : CHAR);
-
-
- |
- | Funktion : Schreibt einen beliebigen Typen fester Länge
- | Parameter : f <- File in das geschrieben werden soll.
- | block -> zu schreibenden Variable.
- |
-
- PROCEDURE WriteBlock(f : File;REF block : ANYTYPE);
-
-
- |
- | Funktion : Schreibt eine Anzahl Bytes aus dem Speicher auf Disk.
- | Parameter : f <- File in das geschrieben werden soll.
- | pos -> Speicherstellen von der ab die Daten geschrieben
- | werden sollen.
- | len -> Anzahl der Zeichen, die gschrieben sollen.
- |
-
- PROCEDURE WriteBytes(f : File;pos : ANYPTR;len : LONGINT);
-
-
- |
-
- |
- | Funktion : Gibt die Position des internen Schreib/Lesezeiger relativ zum
- | Dateianfang aus.
- | Parameter : f <- File von dem man die Information haben will.
- | -> Position in Bytes.
- |
-
- PROCEDURE Pos(f : File):LONGINT;
-
-
- |
- | Funktion : Setz den internen Schreib/Lesezeiger auf die angegebene
- | Position relativ zum Dateianfang.
- | Parameter : f <- File dessen Zeiger versetzt werden soll.
- | pos -> neue Position in Bytes.
- |
-
- PROCEDURE SetPos(f : File;pos : LONGINT);
-
-
- |
- | Funktion : Liefert TRUE zurück, wenn versucht wurde über das Dateiende
- | hinaus zu lesen.
- | Parameter : f <- File das geprüft werden soll
- | -> TRUE wenn Dateiende erreicht wurde.
- |
-
- PROCEDURE Eof(f : File):BOOLEAN;
-
-
- GROUP
- FileIOGrp = Open,File,Close,Length,Read,ReadBlock,
- ReadBytes,Write,WriteBlock,WriteBytes,Pos,SetPos,Eof;
-
- (*============== Quickfiles ==================================================*)
-
- |
- | Die folgenden Quickfile Funktionen entsprechen in ihrer Funktion den oben
- | aufgeführten näheres finden Sie in ihrem Handbuch.
- |
-
- PROCEDURE Q_OpenInFile(REF name : STRING;
- buffSize : LONGINT;
- context : ContextPtr:=NIL);
-
- PROCEDURE Q_OpenOutFile(REF name : STRING;
- buffSize : LONGINT;
- context : ContextPtr:=NIL);
-
- PROCEDURE Q_CloseInFile;
-
- PROCEDURE Q_CloseOutFile;
-
-
- |
- | Funktion : Prüft ob das nächste Zeichen gleich dem angegebenen ist.
- | Parameter : c <- Zeichen auf das getestet werden soll.
- | -> TRUE wenn das nächste Zeichen mit c übereinstimmt
- |
-
- PROCEDURE Q_Test(c : CHAR):BOOLEAN;
-
- PROCEDURE Q_Read(VAR c IN A0 : CHAR);
-
- PROCEDURE Q_ReadBlock(VAR block : ANYTYPE);
-
- PROCEDURE Q_ReadBytes(pos : ANYPTR;len : LONGINT);
-
- PROCEDURE Q_Write(c IN D4 : CHAR);
-
- PROCEDURE Q_WriteBlock(REF block : ANYTYPE);
-
- PROCEDURE Q_WriteBytes(pos : ANYPTR;len : LONGINT);
-
-
- PROCEDURE Q_GetInPos():LONGINT;
-
- PROCEDURE Q_SetInPos(pos : LONGINT);
-
- PROCEDURE Q_GetOutPos():LONGINT;
-
- PROCEDURE Q_SetOutPos(pos : LONGINT);
-
-
- GROUP
- QuickIOGrp = Q_OpenInFile,Q_OpenOutFile,Q_CloseInFile,Q_CloseOutFile,Q_Test,
- Q_Read,Q_ReadBlock,Q_ReadBytes,Q_Write,
- Q_WriteBlock,Q_WriteBytes,Q_GetInPos,Q_SetInPos,Q_GetOutPos,
- Q_SetOutPos;
-
- All = FileIOGrp,QuickIOGrp;
-
- END FileSystem.
-
-